/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package menus;

import bitclub.BitUtil;
import bitclub.Pelicula;
import bitclub.Proveedor;
import bitclub.Prueba;
import bitclub.Tarifa;
import bitclub.Videojuego;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author JAVA
 */
public class OpcionesPeliculas {

    /**
     * Para dar de alta artículos
     */
    public static void opcionPeliculasDarAlta() {

        int respuesta;
        int ano;
        int clasificacionEdad;

        BitUtil.borra();
        respuesta = BitUtil.muestraMenu("¿ Desea dar de Alta una Película o un Videojuego ?", new String[]{"Pelicula", "Videojuego"});

        // La respuesta cero es salir
        if (respuesta == 0) {
            return;
        }


        do {
            ano = BitUtil.dameEntero("Introduzca el año por favor: ");
        } while (ano > 1900 && ano < 2050);


        do {
            clasificacionEdad = BitUtil.dameEntero("Introduzca el año por favor: ");
        } while (clasificacionEdad > 0 && clasificacionEdad < 19);


        String titulo = BitUtil.dameCadena("Introduzca el titulo por favor: ");

        String genero = BitUtil.dameCadena("Introduzca el titulo por favor: ");

        /* 
        Proveedor = Mostrara una lista de Proveedores. 
        Tarifa = Mostrará una lista de Tarifas disponibles.
         */

        if (respuesta == 1) {

            String duracion = BitUtil.dameCadena("Introduzca la duración por favor: ");
            String formato = BitUtil.dameCadena("Introduzca el formato por favor: ");
            String interpretes = BitUtil.dameCadena("Introduzca los interpretes por favor: ");
            String nacionalidad = BitUtil.dameCadena("Introduzca la nacionalidad por favor: ");

            Pelicula nuevaPelicula = new Pelicula(titulo, genero, ano, clasificacionEdad, true, null, null, null, null, 0, true, interpretes, nacionalidad, duracion, formato);
            nuevaPelicula.nuevo();

        } else if (respuesta == 2) {

            String plataforma = BitUtil.dameCadena("Introduzca la plataforma por favor: ");
            String productora = BitUtil.dameCadena("Introduzca el productora por favor: ");

            Videojuego nuevoVideojuego = new Videojuego(titulo, genero, ano, clasificacionEdad, true, null, null, null, null, 0, true, plataforma, productora);
            nuevoVideojuego.nuevo();
        }
    }

    /**
     * Ver datos de un artículo
     * @param articulo 
     */
    public static void opcionPeliculasVer(Pelicula articulo) {
        System.out.println(articulo.toString());
        BitUtil.esperaEnter();
    }

    /**
     * Para editar un artículo
     * @param articulo 
     */
    public static void opcionPeliculasEditar(Pelicula articulo) {

        int respuesta;
        int respuesta2;

        BitUtil.borra();

        //CASTEAR EL ARTICULO A PELICULA               
        Pelicula pelicula = (Pelicula) articulo;

        String opciones[] = {"Titulo", "Genero", "Año", "Clasificación Edad", "Fecha Alta", "Fecha Baja", "Tarifa", "Proveedor", "NÃºmero de Copias", "DuraciÃ³n", "Formato", "Interpretes", "Nacionalidad"};

        respuesta = BitUtil.muestraMenu("EDITAR PELICULA", opciones);
        switch (respuesta) {
            case 1:

                pelicula.setTitulo(BitUtil.dameCadena("Introduzca el Nuevo TÃ­tulo: \n"));
                break;

            case 2:

                pelicula.setGenero(BitUtil.dameCadena("Introduzca el Nuevo Genero: \n"));
                break;

            case 3:

                pelicula.setAno(BitUtil.dameEntero("Introduzca el Nuevo Año: \n"));
                break;

            case 4:

                pelicula.setClasificacionEdad(BitUtil.dameEntero("Introduzca la Nueva ClasificaciÃ³n de Edad : \n"));
                break;

            case 5:

                pelicula.setFechaAlta(BitUtil.dameFecha("Introduzca la Nueva Fecha de Alta: \n"));
                break;

            case 6:

                pelicula.setFechaBaja(BitUtil.dameFecha("Introduzca la Nueva Fecha de Baja: \n"));
                break;

            case 7:

                int tp = 0;
                List<Tarifa> tarifap = Prueba.dameTarifas();
                Iterator tarp = tarifap.iterator();
                String[] arrOpciones = new String[tarifap.size()];

                while (tarp.hasNext()) {
                    Tarifa tf = (Tarifa) tarp.next();
                    arrOpciones[tp] = "Nombre: " + tf.getNombre() + "NÃºmero de DÃ­as" + tf.getNumDias() + "Precio: " + tf.getPrecio() + "Recargo: " + tf.getRecargo();
                    tp++;
                }

                BitUtil.borra();
                int opciones_tarifasp = BitUtil.muestraMenu("LISTA TARIFAS", arrOpciones);
                break;

            case 8:

                int pp = 0;

                List<Proveedor> proveedorp = Prueba.dameProveedores();
                Iterator provp = proveedorp.iterator();
                String[] arrOpcionesp = new String[proveedorp.size()];

                while (provp.hasNext()) {
                    Proveedor pv = (Proveedor) provp.next();
                    arrOpcionesp[pp] = "Nombre: " + pv.getNombre() + "Apellidos" + pv.getApellidos() + "Nombre Empresa: " + pv.getNombredeEmpresa();
                    pp++;
                }

                BitUtil.borra();
                int opciones_proveedorp = BitUtil.muestraMenu("LISTA PROVEEDORES", arrOpcionesp);
                break;

            case 9:

                pelicula.setDuracion(BitUtil.dameCadena("Introduzca la nueva DuraciÃ³n: \n"));
                break;

            case 10:

                pelicula.setFormato(BitUtil.dameCadena("Introduzca el nuevo Formato: \n"));
                break;

            case 11:

                pelicula.setInterpretes(BitUtil.dameCadena("Introduzca los nuevos Interpretes: \n"));
                break;

            case 12:

                pelicula.setNacionalidad(BitUtil.dameCadena("Introduzca la nueva Nacionalidad: \n"));
                break;
        }
    }

    /**
     * Da de baja un artículo o le da de alta si ya estaba de baja
     * @param articulo 
     */
    public static void opcionPeliculasDarBaja(Pelicula articulo) {
        boolean baja;
        if (articulo.isActivo()) {
            System.out.println("Este artículo está activo.");
            baja = BitUtil.dameConfirmacion("Quiere darle de baja? (S/N) ");
            if (baja) {
                articulo.setFechaBaja(new Date());
                articulo.setActivo(false);
                articulo.actualizar();
                System.out.println("El articulo ha sido dado de baja.");
                BitUtil.esperaEnter();
            }
        } else {
            System.out.println("Este articulo no está activo.");
            baja = BitUtil.dameConfirmacion("Quiere darle de alta? (S/N) ");
            if (baja) {
                articulo.setFechaAlta(new Date());
                articulo.setActivo(true);
                articulo.actualizar();
                System.out.println("El articulo ha sido dado de alta.");
                BitUtil.esperaEnter();
            }
        }
    }
}
